// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_BASE_IME_CHROMEOS_MOCK_IME_CANDIDATE_WINDOW_HANDLER_H_
#define UI_BASE_IME_CHROMEOS_MOCK_IME_CANDIDATE_WINDOW_HANDLER_H_

#include <stdint.h>

#include "ui/base/ime/candidate_window.h"
#include "ui/base/ime/chromeos/ime_candidate_window_handler_interface.h"
#include "ui/base/ime/ui_base_ime_export.h"

namespace chromeos {

class UI_BASE_IME_EXPORT MockIMECandidateWindowHandler
    : public IMECandidateWindowHandlerInterface {
public:
    struct UpdateLookupTableArg {
        ui::CandidateWindow lookup_table;
        bool is_visible;
    };

    struct UpdateAuxiliaryTextArg {
        std::string text;
        bool is_visible;
    };

    MockIMECandidateWindowHandler();
    ~MockIMECandidateWindowHandler() override;

    // IMECandidateWindowHandlerInterface override.
    void UpdateLookupTable(const ui::CandidateWindow& candidate_window,
        bool visible) override;
    void UpdatePreeditText(const base::string16& text,
        uint32_t cursor_pos,
        bool visible) override;
    void SetCursorBounds(const gfx::Rect& cursor_bounds,
        const gfx::Rect& composition_head) override;

    int set_cursor_bounds_call_count() const
    {
        return set_cursor_bounds_call_count_;
    }

    int update_lookup_table_call_count() const
    {
        return update_lookup_table_call_count_;
    }

    const UpdateLookupTableArg& last_update_lookup_table_arg()
    {
        return last_update_lookup_table_arg_;
    }
    // Resets all call count.
    void Reset();

private:
    int set_cursor_bounds_call_count_;
    int update_lookup_table_call_count_;
    UpdateLookupTableArg last_update_lookup_table_arg_;
};

} // namespace chromeos

#endif // UI_BASE_IME_CHROMEOS_MOCK_IME_CANDIDATE_WINDOW_HANDLER_H_
